package com.zjsru.plan2025.oneday;

/**
 * 3270. 求出数字答案
 *
 * @Author: cookLee
 * @Date: 2025-01-11
 */
public class GenerateKey {

    /**
     * 主
     * \
     * 输入：num1 = 1, num2 = 10, num3 = 1000
     * <p>
     * 输出：0
     * <p>
     * 解释：
     * <p>
     * 补前导 0 后，num1 变为 "0001" ，num2 变为 "0010" ，num3 保持不变，为 "1000" 。
     * <p>
     * 数字答案 key 的第 1 个数位为 min(0, 0, 1) 。
     * 数字答案 key 的第 2 个数位为 min(0, 0, 0) 。
     * 数字答案 key 的第 3 个数位为 min(0, 1, 0) 。
     * 数字答案 key 的第 4 个数位为 min(1, 0, 0) 。
     * 所以数字答案为 "0000" ，也就是 0 。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        GenerateKey generateKey = new GenerateKey();
        int num1 = 987;
        int num2 = 879;
        int num3 = 798;
        System.out.println(generateKey.generateKey(num1, num2, num3));
    }

    /**
     * 模拟
     *
     * @param num1 num1
     * @param num2 num2
     * @param num3 num3
     * @return int
     */
    public int generateKey(int num1, int num2, int num3) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            int min = Math.min(this.helper(num1, i), Math.min(this.helper(num2, i), this.helper(num3, i)));
            sb.append(min);
        }
        return Integer.parseInt(sb.toString());
    }

    private int helper(int number, int i) {
        String num = String.valueOf(number);
        while (num.length() < 4) {
            num = "0" + num;
        }
        return num.charAt(i) - '0';
    }

    /**
     * 美剧
     *
     * @param num1 num1
     * @param num2 num2
     * @param num3 num3
     * @return int
     */
    public int generateKey2(int num1, int num2, int num3) {
        int key = 0;
        for (int p = 1; num1 > 0 && num2 > 0 && num3 > 0; p *= 10) {
            key += Math.min(Math.min(num1 % 10, num2 % 10), num3 % 10) * p;
            num1 /= 10;
            num2 /= 10;
            num3 /= 10;
        }
        return key;
    }


}
